#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os

__author__ = "knkd"
__version__ = "2010.11.03-01.G"

class RecoverINI:
    content = "[Main]\n"\
              "MinLen    = 0             ; Это длина пути начиная с которой файлы будут вноситься в отчёт.\n"\
              "WriteHash = 0             ; Если поставить <1> то для файлов будет считаться контрольная сума.\n\n"\
              "[SolidTXT]\n"\
              "Write = 1                 ; Если тут цифра <1> то отчёт в текстовом файле создаётся. Если <0> то нет.\n"\
              "Name  = !Report.txt       ; Имя текстового файла.\n\n"\
              "[SolidCSV]\n"\
              "Write = 0                 ; Если тут цифра <1> то отчёт в сплошном CSV-файле создаётся. Если <0> то нет.\n"\
              "Name  = !Report.csv       ; Имя сплошного CSV-файла.\n\n"\
              "[SplitCSV]\n"\
              "Write      = 0            ; Если тут цифра <1> то отчёт в разбитых CSV-файлах создаётся. Если <0> то нет.\n"\
              "StartName  = !Report.csv  ; Шаблон имени для разделённых CSV-файлов. К нему будет добавляться нумерация.\n"\
              "MaxCount   = 65000        ; Количество строк в одном файле. Лучше не менять.\n"
    
    pattern = ';;;; Значение имеют следующие четыре строки, их нельзя смещать выше или ниже.\n'\
              '{ISLONG}{LEN:>4} {ISDIR} {SIZE:>12} - {DATE} - {NAME}\n'\
              '{ISLONG}{LEN:>4} {ISDIR} {SIZE:>12} - {NUM:>7}{ISDUBLE} - {HASH} - {DATE} - {NAME}\n'\
              '"{ISLONG}";"{LEN}";"{ISDIR}";"{DATE}";"{FULL}";"{LAST}";"{PATH}";"{SIZE}";"{NAME}"\n'\
              '"{ISLONG}";"{LEN}";"{ISDIR}";"{NUM}";"{ISDUBLE}";"{HASH}";"{DATE}";"{FULL}";"{LAST}";"{PATH}";"{SIZE}";"{NAME}"\n'\
              ';;;; Ниже этой строки можно менять и добавлять любой текст.\n\n'\
              'Параметры для TXT файла находятся в первой строке для печати без контрольной суммы и\n'\
              'во втором для печати с ней, для CSV файла в третьей для печати без контрольной суммы и\n'\
              'в четвёртом для печати с ней.\n'\
              '{SIZE:>12} - К любому параметру можно добавлять внутри скобок цифру, тогда\n'\
              '             поле в котором напечатается параметр будет шириной как минимум\n'\
              '             столько символов. Оставшееся место будет заполнено пробелами.\n'\
              '             Знак «>» обозначает выравниевание по правому краю («<» по левому,\n'\
              '             a «^» по центру).\n'\
              '             Это нужно только для выравнивания колонок в текстовом файле.\n\n'\
              ';         - Разделитель ячеек таблицы.\n\n'\
              '{ISLONG}  – Зарезервировано под «*» если имя будет таким длинным что винда не даст доступа к каталогу.\n'\
              '{LEN}     - Длина пути.\n'\
              '{ISDIR}   - «+» для каталога и «-» для файла.\n'\
              '{DATE}    - Дата последнего редактирования.\n'\
              '{HASH}    - Контрольная сумма файла.\n'\
              '{NUM}     - Номер файла по контрольной сумме.\n'\
              '{ISDUBLE} - Печатает звёздочку если файл является дублем.\n'\
              '{FULL}    - Полное имя.\n'\
              '{LAST}    - Имя родительского каталога для файла. Для каталога оно будет пустым.\n'\
              '{PATH}    - Путь к файлу без имени файла. Для каталога совпадает с полным путём.\n'\
              '{SIZE}    - Размер файла в байтах. Для кталога равен «DIR».\n'\
              '{NAME}    - Имя файла без пути. Для каталога пустое.\n\n'\
              'Все метки в двойных кавычках для того чтобы Excel не начал преобразовывать размер файла в даты или суммы.\n'

    def __init__(self, fileNameS):
        self.fileNameS = fileNameS

    def recoverINI(self):
        if os.path.isfile(self.fileNameS[0]): os.remove(self.fileNameS[0])
        open(self.fileNameS[0], 'w').write(unicode(self.content, 'utf-8').encode('cp1251'))

    def recoverPattern(self):
        if os.path.isfile(self.fileNameS[1]): os.remove(self.fileNameS[1])
        open(self.fileNameS[1], 'w').write(unicode(self.pattern, 'utf-8').encode('cp1251'))

if __name__ == '__main__':
    pass
